let express = require('express');

let Router = express.Router();
let moduls = require('./module');
let User = moduls.getModel('user');
let Chat = moduls.getModel('chat');

// 测试路由
Router.get('/data',function(req,res) {
    User.find({},function(err,data) {
        if(!err) {
            res.json(data);
        }
    })
})
// 清空数据库
// User.remove({},(err,data) => {})
// 登录信息验证
Router.get('/info',(req,res) => {
    // 先进行cookie验证，然后进行后续操作
    // 获取cookie,到数据库查找是否有对应的用户信息
    let {userId} = req.cookies;
    User.findOne({_id:userId},{pass:0,'__v':0},(err,data) => {
        if(!err && data) {
            res.json({code:0,data});
        }else if(!err && !data) {
            res.json({code:1,desc:'未查到此用户，请重新登录'});
        }else {
            res.json({code:-1,desc:'后台出错了'});
        }
    })
})
// 注册功能
Router.post('/register',function(req,res) {
    // bodyParser插件已经将post请求的数据处理为json格式挂载到req上，即req.body
    console.log('req.body的值',req.body);
    let {user,pass,type} = req.body;
    // 根据用户名查找是否存在此用户名，若存在提示用户更换，若不存在，注册成功
    //由于注册成功后才生成id，但是注册后也需要用cookie存储id，故不用create，使用save方法
    User.find({user},(err,data) => {
        if(!err && data.length > 0) {
            return res.json({code:1,desc:'该用户名已存在'});
        }
        new User({user,pass,type}).save((err,data) => {
            if(!err) {
                res.cookie('userId',data._id);
                return res.json({code:0,desc:'恭喜你，注册成功'});
            }else {
                return res.json({code:1,desc:'用户注册失败，请重新注册'});
            }
        })
        // User.create({user,pass,type},(err,data) => {
        //     if(!err) {
        //         res.json({code:0,desc:'恭喜你，注册成功'});
        //     }else {
        //         res.json({code:1,desc:'用户注册失败，请重新注册'});
        //     }
        // })
    })
})
// 登录功能
Router.post('/login',(req,res) => {
    // 获取用户名和密码然后在数据库中进行查找
    console.log(req.body);
    let {user,pass} = req.body;
    User.findOne({user,pass},{pass:0,'__v':0},(err,data) => {
        if(!err && data) {
            res.cookie('userId',data._id);
            res.json({code:0,data});
        }else if(!err && !data) {
            res.json({code:1,desc:'不注册就想登录？没门儿'});
        }else {
            res.json({code:1,desc:'登录失败了，请换个姿势再次登录'});
        }
    })
})
// boss和牛人信息保存功能
Router.post('/bosssave',(req,res) => {
    // 获取cookie，验证登录状态
    let {userId} = req.cookies;
    if(!userId) {
        return res.json({code:1,desc:'该用户未登录，请先登录'})
    }
    console.log(userId);
    // 如果存在cookie，查找并更新此userId对应的信息
    // let {type,user,avater} = req.body;
    console.log(req.body);
    User.findByIdAndUpdate({_id:userId},req.body,(err,data) => {
        console.log(data);
        delete data.pass;
        if(!err && data) {
            let returnData = {...data,...req.body};
            return res.json({code:0,data:returnData});
        }
    })
})
// 请求boss和牛人列表
Router.get('/userlist',(req,res) =>{
    // 先验证cookie
    let {userId} = req.cookies;
    if(!userId) {
        return res.json({code:1,desc:'该用户未登录，请先登录'})
    }
    console.log(req.query);
    let {type} = req.query;
    User.find({type},(err,data) => {
        if(!err && data) {
            return res.json({code:0,userlist:data});
        }else {
            return res.json({code:1,desc:'网络错误，请重新获取数据'});
        }
    })
})
// 获取消息列表数据
Router.get('/getMsgList',(req,res) => {
    let userId = req.cookies.userId;
    let {chaterId} = req.query;
    console.log(userId,chaterId)
    if(!userId) {
        return res.json({code:1,desc:'该用户未登录，请先登录'})
    }
    // 通过用户id查找用户信息
    User.findOne({_id:chaterId},(err,data) => {
        if(!err && data) {
            let users = {};
            users.user = data.user;
            users.avatarText = data.avatarText;
            // 查找是输入限制条件
            Chat.find({'$or':[{from:userId},{to:userId}]},(err,data) => {
                if(!err && data) {
                    res.json({code:0,msgList:data,users});
                }
            })
        }
    })    
})

module.exports = Router;